/*
* 自定义 UI 界面配置类
*
* Y 轴
*  iOS       以导航栏底部为 0 作为起点
*  Android   以导航栏底部为 0 作为起点
* X 轴
*  iOS       以屏幕中心为 0 作为起点，往屏幕左侧则减，往右侧则加，如果不传或者传 null，则默认屏幕居中
*  Android   以屏幕左侧为 0 作为起点，往右侧则加，如果不传或者传 null，则默认屏幕居中
* */
class UIConfig {
/// 授权页导航栏
// int 设置状态栏颜色（系统版本 5.0 以上可设置）
int setStatusBarColor;
// int 设置状态栏字体颜色（系统版本 6.0 以上可设置黑色、白色）。true 为黑色
int setLightColor;
// int 设置导航栏颜色
int setNavColor;
// String 设置导航栏标题文字
String setNavText;
// int 设置导航栏标题文字颜色
int setNavTextColor;
// int 设置导航栏标题文字大小
int setNavTextSize;
// String 设置导航栏返回键图片
String setNavReturnImgPath;
// boolean	设置导航栏返回按钮隐藏
bool setNavReturnHidden;
// setNavHidden	bool	设置默认导航栏是否隐藏
bool setNavHidden;
// setStatusBarHidden	bool	设置状态栏是否隐藏
bool setStatusBarHidden;
// int 设置状态栏UI属性 View.SYSTEM_UI_FLAG_LOW_PROFILE View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
int setStatusBarUIFlag;
// int 设置协议页状态栏颜色（系统版本 5.0 以上可设置）不设置则与授权页设置一致
int setWebViewStatusBarColor;
// int 设置协议页顶部导航栏颜色 不设置则与授权页设置一致
int setWebNavColor;
// int 设置协议页顶部导航栏标题颜色 不设置则与授权页设置一致
int setWebNavTextColor;
// int 设置协议页顶部导航栏文字大小 不设置则与授权页设置一致
int setWebNavTextSize;
// String 设置协议页导航栏返回按钮图片路径 不设置则与授权页设置一致
String webNavReturnImgPath;

/// 授权页Logo
// boolean 隐藏logo
bool setLogoHidden;
// String 设置logo 图片
String setLogoImgPath;
// int 设置logo 控件宽度，单位dp
int setLogoWidth;
// int 设置logo 控件高度，单位dp
int setLogoHeight;
// int 设置logo 控件相对导航栏顶部的位移，单位dp
int setLogoOffsetY;
// int 设置logo 控件相对底部的位移，单位dp
int setLogoOffsetY_B;
// ImageView.ScaleType 设置logo图片缩放模式
String setLogoScaleType;

/// 授权页号码栏
// int	设置手机号码字体颜色
int setNumberColor;
// int	设置手机号码字体大小
int setNumberSize;
// int	设置号码栏控件相对导航栏顶部的位移，单位 dp
int setNumFieldOffsetY;
// int	设置号码栏控件相对底部的位移，单位 dp
int setNumFieldOffsetY_B;
// int	设置号码栏相对于默认位置的X 轴偏移量，单位dp
int setNumberFieldOffsetX;
// int	设置手机号掩码的布局对齐方式，只支持Gravity.CENTER_HORIZONTAL、Gravity.LEFT、Gravity.RIGHT三种对齐方式
int setNumberLayoutGravity;

/// 授权页登录按钮
// String	设置登录按钮文字
String setLogBtnText;
// int	设置登录按钮文字颜色
int setLogBtnTextColor;
// int	设置登录按钮文字大小
int setLogBtnTextSize;
// int	设置登录按钮宽度，单位 dp
int setLogBtnWidth;
// int	设置登录按钮高度，单位dp
int setLogBtnHeight;
// int	设置登录按钮相对于屏幕左右边缘边距
int setLogBtnMarginLeftAndRight;
// String	设置登录按钮背景图片路径
String setLogBtnBackgroundPath;
// int	设置登录按钮相对导航栏顶部的位移，单位 dp
int setLogBtnOffsetY;
// int	设置登录按钮相对底部的位移，单位 dp
int setLogBtnOffsetY_B;
// String	设置登录loading dialog 背景图片路径
String setLoadingImgPath;
// int	设置登陆按钮X轴偏移量，如果设置了setLogBtnMarginLeftAndRight，并且布局对齐方式为左对齐或者右对齐,则会在margin的基础上再增加offsetX的偏移量，如果是居中对齐，则仅仅会在居中的基础上再做offsetX的偏移。
int setLogBtnOffsetX;
// int	设置登陆按钮布局对齐方式，只支持Gravity.CENTER_HORIZONTAL、Gravity.LEFT、Gravity.RIGHT三种对齐方式
int setLogBtnLayoutGravity;

/// 授权页隐私栏
// String,String 设置开发者隐私条款 1 名称和URL(名称，url)
String setAppPrivacyOne;
// String,String 设置开发者隐私条款 2 名称和URL(名称，url)
String setAppPrivacyTwo;
// int,int	设置隐私条款名称颜色(基础文字颜色，协议文字颜色)
int setAppPrivacyColor;
// int	设置隐私条款相对导航栏顶部的位移，单位dp
int setPrivacyOffsetY;
// int	设置隐私条款相对底部的位移，单位dp
int setPrivacyOffsetY_B;
// boolean	设置隐私条款是否默认勾选
bool setPrivacyState;
// int	设置隐私条款文字对齐方式，单位Gravity.xxx
int setProtocolGravity;
// int	设置隐私条款文字大小，单位sp
int setPrivacyTextSize;
// int	设置隐私条款距离手机左右边缘的边距，单位dp
int setPrivacyMargin;
// String	设置开发者隐私条款前置自定义文案
String setPrivacyBefore;
// String	设置开发者隐私条款尾部自定义文案
String setPrivacyEnd;
// boolean	设置复选框是否隐藏
bool setCheckboxHidden;
// String	设置复选框未选中时图片
String setUncheckedImgPath;
// String	设置复选框选中时图片
String setCheckedImgPath;
// String	设置运营商协议前缀符号，只能设置一个字符，且只能设置<>()《》【】『』[]（）中的一个
String setVendorPrivacyPrefix;
// String	设置运营商协议后缀符号，只能设置一个字符，且只能设置<>()《》【】『』[]（）中的一个
String setVendorPrivacySuffix;
// int	设置隐私栏的布局对齐方式，该接口控制了整个隐私栏（包含checkbox）在其父布局中的对齐方式，而setProtocolGravity控制的是隐私协议文字内容在文本框中的对齐方式
int setProtocolLayoutGravity;
// int	设置隐私栏X轴偏移量，单位dp
int setPrivacyOffsetX;
// boolean	设置checkbox未勾选时，点击登录按钮toast是否显示
bool setLogBtnToastHidden;

/// 切换方式控件
// boolean	设置切换按钮点是否可见
bool setSwitchAccHidden;
// String	设置切换按钮文字内容
String setSwitchAccText;
// int	设置切换按钮文字颜色
int setSwitchAccTextColor;
// int	设置切换按钮文字大小
int setSwitchAccTextSize;
// int	设置换按钮相对导航栏顶部的位移，单位 dp
int setSwitchOffsetY;
// int	设置换按钮相对底部的位移，单位 dp
int setSwitchOffsetY_B;

/// 页面相关函数
// String	设置授权页进场动画
String setAuthPageActIn;
// String	设置授权页退出动画
String setAuthPageActOut;
// int	设置屏幕方向，取值为ActivityInfo中的屏幕方向常量值，比如 ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
int setScreenOrientation;
// String	设置授权页背景图 drawable资源的目录，不需要加后缀，比如图片在drawable中的存放目录是res/drawable-xxhdpi/loading.png,则传入参数为”loading”，setPageBackgroundPath(“loading”)
String setPageBackgroundPath;
// int	设置弹窗模式授权页宽度，单位dp,设置大于0即为弹窗模式
int setDialogWidth;
// int	设置弹窗模式授权页高度，单位dp，设置大于0即为弹窗模式
int setDialogHeight;
// int	设置弹窗模式授权页X轴偏移，单位dp
int setDialogOffsetX;
// int	设置弹窗模式授权页Y轴偏移,单位dp
int setDialogOffsetY;
// boolean	设置授权页是否居于底部
bool setDialogBottom;

  Map toJsonMap() {
    return {
      
    }..removeWhere((key, value) => value == null);
  }
}